package com.sourcestruct.linearlist;

import lombok.ToString;

/**
 * @author: ZhouBert
 * @date: 2019/6/7
 * @description:	顺序栈（不支持动态扩容）
 */
@ToString
public class ArrayStack<T> {
	/**
	 * 特征：用数组存放元素
	 */
	private T[] data;
	/**
	 * 实际长度
	 */
	private int size;
	/**
	 * constructor 定义元素长度
	 * @param capacity
	 */
	public ArrayStack(int capacity) {
		data = (T[])new Object[capacity];
		size=0;
	}

	/**
	 * 入栈（超出界限时抛出非法异常）
	 * @param obj
	 */
	public void push(T obj){
		if (size==data.length){
			throw new IllegalArgumentException("栈元素超出限制！");
		}
		data[size]=obj;
		size++;
	}

	/**
	 * 出栈
	 * @return
	 */
	public T pop(){
		if (size==0){
			throw new IllegalArgumentException("栈内无元素！");
		}
		size--;
		return data[size];
	}
}
